草庐IT

带方括号的 mySQL 正则表达式

全部标签

ruby - 有什么办法可以缩短这个正则表达式吗?

我想匹配格式为A0123456、E0123456或IN:A0123456Q等格式的字符串,我原来做的是这个regex^(IN:)?[AE][0-9]{7}Q?$但它匹配IN:E012346而末尾没有Q。所以我创建了这个正则表达式(^IN:[AE][0-9]{7}Q$)|(^[AE][0-9]{7}$)有什么方法可以缩短这个正则表达式,使其同时需要IN:和Q如果它们存在,但如果两者都不存在则不需要?编辑:正则表达式将在Ruby中使用。编辑2:我更改了正则表达式以反射(reflect)我匹配了错误的字符串,因为它仍然匹配IN:A0123456。编辑3:下面的两个答案都是有效的,但由于我使用

ruby - 如何覆盖 Hash native 括号([] 访问)

我想覆盖ruby​​中的Hash类native括号。请注意,我不想在继承自Hash的类中覆盖它们(没有子类),我想实际覆盖Hash本身,这样任何地方的任何哈希都将始终继承我的行为。特别是(奖励积分...)-我想要这个是为了在本地模拟一个无差异访问的散列。在JavaScript中,我会修改prototype,Ruby以其元编程而闻名,所以我希望这是可能的。所以我的目标是:>>#whatdoIdoheretooverloadHash's[]?...>>x={a:123}#xisanativeHash>>x[:a]#==123,asusual>>x['a']#==123,hooray!我试过

Ruby 正则表达式 - 用文本中间的空格替换点

我有一个很长的文本,我想用空格替换其中的点,但只能在文本的中间。例如:Domain:...................google.com我需要这样:Domain:google.com我发现了这个用单个空格替换点的正则表达式:str.gsub!(/(?但这还不够,因为它会产生:Domain:google.com我需要保留与点一样多的空格。你会如何解决? 最佳答案 你快到了,你的正则表达式没问题,只需使用String#gsub的block版本计算替换匹配的长度:▶str='Domain:...................goo

ruby-on-rails - Ruby - 转义括号

我这辈子都弄不明白,尽管它应该很简单。如何用"\("和替换字符串中所有出现的"("和")""\)"?似乎没有任何效果:"foo(bar)foo".gsub("(","\(")#=>"foo(bar)foo""foo(bar)foo".gsub("(","\\(")#=>"foo\\(bar)foo"有什么想法吗? 最佳答案 第二次尝试时您已经有了解决方案,您只是感到困惑,因为字符串在交互式解释器中以转义形式显示。但实际上只有一个反斜杠,没有两个。尝试使用puts打印它,您会发现实际上只有一个反斜杠:>"foo(bar)foo".gs

ruby - 在正则表达式中使用否定条件

是否可以在gsub表达式中使用否定匹配?我想替换以hello开头的字符串except以helloPeter开头的字符串>my-string.gsub(/^hello@/i,'')我应该用什么代替@? 最佳答案 听起来你想要一个负面的前瞻:>>"hellofoo".gsub(/hello(?!peter)/,'lala')#=>"lalafoo">>"hellopeter".gsub(/hello(?!peter)/,'lala')#=>"hellopeter" 关于ruby-在正则表达式

ruby-on-rails - 为什么表达式 "a, b = 5"在 Ruby 中将 a 设置为 5,而将 b 设置为 nil?

(irb)a,b=5a=>5b=>nil不应该反过来吗?这里到底发生了什么? 最佳答案 在我写这篇文章时,我的同事发现了原因:Ruby将a,b=5视为a,b=5,nil在Python3中,抛出一个TypeError。 关于ruby-on-rails-为什么表达式"a,b=5"在Ruby中将a设置为5,而将b设置为nil?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/314621

ruby - Ruby 中的正则表达式负后视似乎不起作用

制作参数解析器。我想将一个字符串拆分为一个分隔符为","的数组除非前面有"|".这意味着字符串"foo,ba|,r,arg"应该导致`["foo","ba|,r","arg"]`我正在尝试使用这个正则表达式:(?适用于http://regexhero.net/tester/但是当我尝试args.split(/(?在ruby​​中,我得到一个错误:undefined(?...)sequence:/(? 最佳答案 Ruby的正则表达式引擎还不支持lookbehind。您需要切换到1.9或使用Oniguruma.如果这不是一个选项,您可以

Ruby 正则表达式,只有一次捕获(非常简单!)

我想这将是一个愚蠢的错误,但对我来说,以下返回一个仅包含“M”的数组。看这个:/(.)+?/.match("Manymanycharacters!").captures=>["M"]为什么它不返回每个字符的数组?我一定是错过了一些明显的东西,因为我看不出这有什么问题?编辑:刚刚意识到,我不需要+?但没有它仍然无法工作。编辑:抱歉!我会澄清:我的目标是让用户输入正则表达式和样式以及输入文本文件,只要有匹配项,文本就会被html元素包围并应用样式,我不只是拆分将字符串转换为字符,我只使用了给定的正则表达式,因为它是最简单的,尽管这对我来说很愚蠢。我如何从scan()获取捕获组或者这是不可能

ruby - block 变量中的括号

给定a=[[:a,:b,:c]]1)我明白这一点a.each{|(x,y),z|pz}#=>:b有两个变量(x,y)和z,所以第三个元素:c被扔掉了,z匹配:b。我明白这一点a.each{|(x,y),z|py}#=>nil(x,y)匹配:a,因为它不是数组,所以它没有元素,所以y匹配nil。但是如何a.each{|(x,y),z|px}#=>:a工作?我希望返回nil。2)为什么返回值是这样的?a.each{|(x,y)|px}#=>:aa.each{|(x,y)|py}#=>:b我希望它们都返回nil。 最佳答案 这是因为并行赋

ruby (在 Rails 上)正则表达式 : removing thousands comma from numbers

这看起来很简单,但我遗漏了一些东西。我有大量来自各种来源和不同格式的输入。数字输入123123.45123,45(notethecommausedheretodenotedecimals)1,2341,234.5612,345.6712,345,67(notethecommausedheretodenotedecimals)关于输入的附加信息数字永远小于100万编辑:这些是价格,因此要么是整数,要么是百分之一我正在尝试编写一个正则表达式并使用gsub去除千位逗号。我该怎么做?我写了一个正则表达式:myregex=/\d+(,)\d{3}/当我在Rubular中测试它时,它表明它只在我想